package factory.simpleFactory;

import factory.bean.Car;
import factory.bean.Truck;
import factory.bean.Vehicle;
import java.math.BigDecimal;

/**
 * 简单工厂模式实例, 调用者只需要关心生成对象, 而不需要关注如何创建该对象
 * 缺点: 不符合开闭原则 新增产品时需要改动工厂对象源码
 */
public class VehicleFactory {
    /**
     * 生产交通工具的静态工厂
     * @param type 支持"car", "truck" 默认为"car"
     * @return Vehicle
     */
    public static Vehicle create(String type){
        if (null == type){
            type = "";
        }
        switch (type){
            case "":
            case "car":
                return new Car(new BigDecimal("299"), "大众");
            case "truck":
                return new Truck(new BigDecimal("350.4"), "东风", 4500.99);
            default:
                throw new RuntimeException("传入参数错误");
        }
    }

    /**
     * 生产默认交通工具
     * @return Vehicle
     */
    public static Vehicle create(){
        return create("car");
    }
}
